如果有從永豐銀行API那邊下載過C#版的豐收款QPay.SampleCode,應該能發現他們目前的專案是用 .NET Framework 4.5.2 進行開發,code也是集中在QPayToolkit.cs
這個檔案
今天就來介紹一下sample code使用HttpClient
呼叫API的部分
微軟在.NET Framework 4.5的時候推出HttpClient,以取代原本的WebClient,但是卻有一些連線端耗盡及DNS異動問題。所以微軟又推出了HttpClientFactory來改善這些情況。
在.Net Core 3.1框架,也有支援HttpClientFactory
,首先必須在Startup.cs
的ConfigureServices
去註冊
services.AddHttpClient();
回去原本的程式碼,在一開始利用相依性注入(DI)
private readonly IHttpClientFactory _clientFactory;
public NonceRepository(IHttpClientFactory clientFactory)
{
_clientFactory = clientFactory;
}
接下來就進入到發出Post請求的部分了,其實HttpClientFactory
與HttpClient
實作的程式碼差異並不會太大~
public async Task PushMessage()
{
// 建立 HttpClient 實例
var httpClient = _clientFactory.CreateClient();
httpClient.BaseAddress = new Uri("https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/");
var message = "shopNo=xxx";
var json = JsonConvert.SerializeObject(message);
HttpContent contentPost = new StringContent(json, Encoding.UTF8, "application/json");
await httpClient.PostAsync("Nonce", contentPost);
}
至於實際在Startup.cs設定HttpClientFactory
以及實際調用API的情況,明天會再繼續補充~
See you